package hottargui.domain.objectServer;

import hottargui.domain.*;
/**
 * Responsibillity:
 * 
 *   - give a signle point of access to variability points and objects 
 *   that witch references may be changed at runtime; 
 *    
 * 
 * @author Per
 *
 */


public interface ObjectServer {


	
	/**
	 * Fetches the colleage witch is an instance of the HotTargui's current WinnerStrategy 
	 * @return WinnerStrategy
	 */
	PlaceUnitsStrategy getPlaceUnitsStrategy();
	

	/**
	 * Gets a collegue in the form of a deck of Cards 
	 * @return DeckOfCards
	 */
	DeckOfCards getDeckOfCards();

	
	
	/**
	 * Sets the current factory on witch the game is based 
	 * @param gameFactory the factory be current
	 */
	void setCurrentFactory(GameFactory gameFactory);
	

	/**
	 * Sets the current factory on witch the game is based 
	 * @param stateMachine the statemachine be current
	 */
	void registerStateMachine(SimpleStateMachine stateMachine);
	
	
	/**
	 * Sets a reference to the class that creates cards
	 * @param deckOfCardsCreator a class crating DecksOfCards 
	 */
	void registerDeckCreator(DeckOfCardsCreator deckOfCardsCreator);

	
	
	
}
